package com.mdc.mansion.web.common.config;

import java.io.File;
import java.io.IOException;
import java.util.Map;

import com.mdc.mansion.common.util.PropertiesLoader;
import org.apache.commons.lang.StringUtils;
import org.springframework.core.io.DefaultResourceLoader;

import com.google.common.collect.Maps;

/**
 * 全局配置类
 */
public class WebGlobal {

	/**
	 * 当前对象实例
	 */
	private static WebGlobal global = new WebGlobal();
	
	/**
	 * 保存全局属性值
	 */
	private static Map<String, String> map = Maps.newHashMap();
	
	/**
	 * 属性文件加载对象
	 */
	private static PropertiesLoader loader = new PropertiesLoader("config/web-config.properties");
	
	/**
	 * 获取当前对象实例
	 */
	public static WebGlobal getInstance() {
		return global;
	}
	
	/**
	 * 显示/隐藏
	 */
	public static final String SHOW = "1";
	public static final String HIDE = "0";

	/**
	 * 是/否
	 */
	public static final String YES = "1";
	public static final String NO = "0";
	
	/**
	 * 对/错
	 */
	public static final String TRUE = "true";
	public static final String FALSE = "false";
	
	/**
	 * 获取配置
	 * @see ${fns:getConfig('adminPath')}
	 */
	public static String getConfig(String key) {
		String value = map.get(key);
		if (value == null){
			value = loader.getProperty(key);
			map.put(key, value != null ? value : StringUtils.EMPTY);
		}
		return value;
	}
	
	/**
	 * 获取管理端根路径
	 */
	public static String getAdminPath() {
		return getConfig("adminPath");
	}
	/**
	 * 文件保存路径
	 * @return
	 */
	public static String getFileUploadPath(){
		return getConfig("file_upload_path");
	}
	/**
	 * 文件访问的url
	 * @return
	 */
	public static String getFileUrlPre(){
		return getConfig("file_url_pre");
	}
	
	public static int getInt(String key){
		String value=getConfig(key);
		return Integer.parseInt(value);
	}
	
	/**
	 * 获取数组配置
	 * @see ${fns:getConfig('adminPath')}
	 */
	public static String[] getArrayConfig(String key) {
		String value = map.get(key);
		if (value == null){
			value = loader.getProperty(key);
			map.put(key, value != null ? value : StringUtils.EMPTY);
		}
		return value.split(",");
	}

    /**
     * 获取工程路径
     * @return
     */
    public static String getProjectPath(){
    	// 如果配置了工程路径，则直接返回，否则自动获取。
		String projectPath = WebGlobal.getConfig("projectPath");
		if (StringUtils.isNotBlank(projectPath)){
			return projectPath;
		}
		try {
			File file = new DefaultResourceLoader().getResource("").getFile();
			if (file != null){
				while(true){
					File f = new File(file.getPath() + File.separator + "src" + File.separator + "main");
					if (f == null || f.exists()){
						break;
					}
					if (file.getParentFile() != null){
						file = file.getParentFile();
					}else{
						break;
					}
				}
				projectPath = file.toString();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return projectPath;
    }
	
}
